const CompressionPlugin = require("compression-webpack-plugin");

module.exports = {
  outputDir: "dist",
  lintOnSave: true,
  productionSourceMap: false,
  chainWebpack: config => {
    if (process.env.NODE_ENV === "production") {
      // 生产环境压缩js/css/less
      config.plugin("compressionPlugin").use(
        new CompressionPlugin({
          filename: "[path].gz[query]",
          algorithm: "gzip",
          test: /\.(js|css|less)$/,
          threshold: 10240,
          minRatio: 0.8,
          deleteOriginalAssets: false
        })
      );
      // 生产环境移除console
      config.optimization.minimizer("terser").tap(args => {
        args[0].terserOptions.compress.drop_console = true;
        args[0].terserOptions.compress.drop_debugger = true;
        args[0].terserOptions.compress.pure_funcs = ["console.log"];
        args[0].terserOptions.output = {
          comments: false
        };
        return args;
      });
    }
    // 配置 webpack 识别 markdown 为普通的文件
    config.module
      .rule("markdown")
      .test(/\.md$/)
      .use()
      .loader("file-loader")
      .end();
  },
  devServer: {
    // 端口配置
    port: 9011,
    // 反向代理配置
    proxy: {
      "/api": {
        target: process.env.VUE_APP_API_BASE_URL, // 后台接口域名
        ws: false, // 是否代理WebSockets
        secure: false, // 如果是https接口，需要配置这个参数
        changeOrigin: true // 是否跨域
      },
      "/actuator": {
        target: process.env.VUE_APP_API_BASE_URL, // 后台接口域名
        ws: false, // 是否代理WebSockets
        secure: false, // 如果是https接口，需要配置这个参数
        changeOrigin: true // 是否跨域
      }
    }
  },

  css: {
    loaderOptions: {
      less: {
        lessOptions: {
          modifyVars: {
            /* less 变量覆盖，用于自定义 ant design 主题 */
            "primary-color": "#1890FF",
            "link-color": "#1890FF",
            "border-radius-base": "4px"
          },
          javascriptEnabled: true
        }
      }
    }
  }
};
